﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AgendaManager.AgendaService;

namespace AgendaManager
{
    public partial class frmSubCarpeta : Form
    {
        public Obra Obra { get; set; }
        public Carpeta Carpeta { get; set; }
        public Semana Semana { get; set; }

        List<SubCarpeta> SubCarpetas { get; set; }

        public frmSubCarpeta()
        {
            InitializeComponent();
        }

        private void frmSubCarpeta_Load(object sender, EventArgs e)
        {
            if (Semana != null)
            {
                txObra.Text = Obra.Nombre;
                txCarpeta.Text = Carpeta.Tipo;
                txSemana.Text = Semana.Nombre;

                FillGvSubCarpetas();
            }
        }

        private void FillGvSubCarpetas()
        {
            SubCarpetas = ConnectHelper.ws.RetrieveEntitiesWhere(new SubCarpeta(),
                    "SemanaId = " + Semana.Id.ToString()).Cast<SubCarpeta>().ToList();

            gvSubCarpetas.DataSource = null;
            gvSubCarpetas.DataSource = SubCarpetas;
            gvSubCarpetas.Columns["Id"].Visible = false;
            gvSubCarpetas.Columns["SemanaId"].Visible = false;
            gvSubCarpetas.Columns["Nombre"].Width = 480;
            gvSubCarpetas.Columns["CantFotos"].Width = 70;
        }

        internal void SetValues(Obra obra, Carpeta carpeta, Semana semana)
        {
            try
            {
                Obra = obra;
                Carpeta = carpeta;
                Semana = semana;

                txObra.Text = Obra.Nombre;
                txCarpeta.Text = Carpeta.Tipo;
                txSemana.Text = Semana.Nombre;

                FillGvSubCarpetas();
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            if (gvSubCarpetas.SelectedRows.Count == 1)
            {
                SubCarpeta subCarpeta = new SubCarpeta();
                subCarpeta = (SubCarpeta)gvSubCarpetas.SelectedRows[0].DataBoundItem;

                var f = FormsHelper.ShowForm<frmFotos>();
                f.SetValues(Obra, Carpeta, Semana, subCarpeta);
            }
            else
            {
                MessageBox.Show("Debe seleccionar una Carpeta.",
                            "Carpeta.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btAdd_Click(object sender, EventArgs e)
        {
            using (frmNuevaSubCarpeta f = new frmNuevaSubCarpeta())
            {
                f.Semana = Semana;
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    MessageBox.Show("La Carpeta fue creada correctamente.",
                            "Carpeta.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);

                    FillGvSubCarpetas();
                }
                else
                {
                    MessageBox.Show("No se pudo crear la Carpeta, por favor intentelo maás tarde.",
                            "Carpeta.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);
                }
                
            }
        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvSubCarpetas.SelectedRows.Count == 1)
                {
                    SubCarpeta subCarpeta = new SubCarpeta();
                    subCarpeta = (SubCarpeta)gvSubCarpetas.SelectedRows[0].DataBoundItem;

                    if (subCarpeta.Id != 0)
                    {
                        using (frmEditarSubCarpeta f = new frmEditarSubCarpeta())
                        {
                            f.Subcarpeta = subCarpeta;

                            if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                MessageBox.Show("La Carpeta fue editada correctamente.",
                                        "Carpeta.",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Exclamation);

                                FillGvSubCarpetas();
                            }
                            else
                            {
                                MessageBox.Show("No se pudo editar la Carpeta, por favor intentelo más tarde.",
                                        "Carpeta.",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Exclamation);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {

            }
        }

        private void btRemove_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvSubCarpetas.SelectedRows.Count == 1)
                {
                    SubCarpeta subCarpeta = new SubCarpeta();
                    subCarpeta = (SubCarpeta)gvSubCarpetas.SelectedRows[0].DataBoundItem;

                    if (subCarpeta.Id != 0)
                    {
                        if (MessageBox.Show("Eliminando la carpeta estará eliminando todo su contenido, está seguro de hacerlo?.",
                            "Carpeta.",
                            MessageBoxButtons.OKCancel,
                            MessageBoxIcon.Exclamation) ==
                            System.Windows.Forms.DialogResult.OK)
                        {
                            if (ConnectHelper.ws.DeleteEntity(subCarpeta))
                            {
                                MessageBox.Show("La carpeta y su contenido fue eliminado correctamente.",
                                    "Carpeta.",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Exclamation);

                                FillGvSubCarpetas();
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}
